/*
 * utils.h
 *
 *  Created on: 15-03-2013
 *      Author: MCzepczyński
 */

#ifndef UTILS_H_
#define UTILS_H_

/******************************************************************************************
 *	Makrodefinicje															 			 *
 *****************************************************************************************/


/******************************************************************************************
 *	Deklaracje dołączanych plików nagłówkowych i bibliotek								 *
 *****************************************************************************************/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <avr/pgmspace.h>

#include "turn_signal.h"
#include "wiper.h"
#include "uart.h"

extern volatile uint16_t wiper_timer;
extern volatile uint16_t turn_timer;
extern volatile uint8_t w_stat;
extern volatile uint16_t fog_timer;

typedef struct{
	uint8_t wiper_delay;
	uint8_t turn_imp_delay;
	uint16_t turn_delay;
} TCFG;

extern TCFG const pgm_cfg PROGMEM;		// dane w pami�ci FLASH
extern TCFG eem_cfg EEMEM;		// dane w pami�ci EEPROM
extern TCFG ram_cfg;		// dane w pami�ci RAM

/******************************************************************************************
 *	Deklaracje funkcji								 									 *
 *****************************************************************************************/
void config_peripherals(void);
void copy_eem_to_ram(void);
void copy_ram_to_eem(void);
void copy_pgm_to_ram(void);
void load_defaults(void);
void check_and_load_defaults(void);
uint8_t check_module_config(void);

#endif /* UTILS_H_ */
